// 给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。

// 子数组 是数组中的一个连续部分。

/**
 * @param {number[]} nums
 * @return {number}
 */
// 先按元素去找，先找以某个元素开头的最长连续子数组的和，再比较这些和，去最大值
// f（x）为求以索引为x的元素开头的连续子数组的最大和
// f(1) = f(2)+arr[1]
 const maxSubArray = function(nums) {
     let max  //存放这个数组的连续子序列的最大和的变量
    function maxSubArray (n){
        debugger
        if(n<nums.length-1){
            const maxNext = maxSubArray(n+1)
            const maxN =maxNext >0?maxNext+nums[n]:nums[n]
            max = Math.max(max,maxN)
            return maxN
        } else {
            max = nums[n]
            return nums[n]
        }
 
    
    }

    maxSubArray(0)
    return max
};

const result = maxSubArray([-2,1,-3,4,-1,2,1,-5,4])
console.log(result);